package com.mjf.scala.chapter01

/**
 * 这个Idea第一个Scala程序
 *
 * -object 名称：从语法角度讲，表名生成了一个伴生对象
 *  Scala是纯面向对象的，去除了Java中static关键字，通过伴生对象来模拟static效果
 *
 * -伴生对象：
 *  *伴随类产生的一个对象
 *  *当我们对源文件进行编译之后，默认会生成两个字节码文件，一个是伴生类（Scala01_HelloWorld.class），一个是伴生对象所属类（Scala01_HelloWorld$.class）
 *    其实真正的伴生对象是 伴生对象所属类中创建的单例的对象（module$）
 *  *如果不想默认生成伴生类，可以手动生成，要求伴生类名称和伴生对象名称一致
 *
 * -注意：以后在Scala语言中，如果要定义类似Java的static内容，都应该放到伴生对象中声明
 *
 * -------------------------------------------------------------------------
 * -对第一个Scala案例进行说明
 *  >object
 *      关键字，表示声明一个伴生对象
 *  >Scala01_HelloWorld
 *      伴生对象名称，取名的时候需要符合标识符命名规则
 *  >def
 *      关键字，表示声明一个方法
 *  >main
 *      方法的名称
 *  >args: Array[String]
 *      args  表示参数的名称
 *      Array[String] 表示参数类型，在Scala语言中，[]表示泛型
 *      声明参数的时候，名称在前，类型在后，名称和类型之间用冒号分隔
 *  >Unit
 *      返回值类型为空，相当于Java语言中的void关键字
 *      Unit是一个类型，当前类型只有一个实例（）
 *      参数列表和返回值类型之间，用冒号分隔
 *      返回值类型和函数体之间用等号进行连接
 *  >println("HelloScala")
 *      向控制台打印输出内容
 *      在Scala语言中，语句结束不需要加分号
 *
 */
object Scala01_HelloWorld {
  def main(args: Array[String]): Unit = {
      println("HelloScala")
      println(new Student().name)
      println(Student.bzr)    // 静态属性
  }
}

object Student{
  var bzr:String = "xu"
}

class Student{
  var name:String = _
  var age:Int = _
}